home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 3.4 KB | 158 lines | [TEXT/R*ch] |
- /*
- File: Message.cp
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef __MESSAGE__
- #include "Message.h"
- #endif
-
- #ifndef __RESOURCES__
- #include "Resources.h"
- #endif
-
-
- /***********************************|****************************************/
-
- TMessage::TMessage ( ) :
- fLockCount ( 0 )
- {
- fMessage = FAILNewHandle ( 0 );
- }
-
- /***********************************|****************************************/
-
- TMessage::TMessage ( const char * message ) :
- fLockCount ( 0 )
- {
- unsigned long l = strlen ( message );
- fMessage = FAILNewHandle ( l );
-
- BlockMove ( (Ptr) message, *fMessage, l );
- }
-
- /***********************************|****************************************/
-
- TMessage::TMessage ( const unsigned char * message ) :
- fLockCount ( 0 )
- {
- unsigned long l = message[0];
-
- fMessage = FAILNewHandle ( l );
-
- BlockMove ( (Ptr) & message [ 1] , *fMessage, l );
- }
-
- /***********************************|****************************************/
-
- TMessage::TMessage ( short messageBase, short id ) :
- fLockCount ( 0 )
- {
- Handle resH = GetResource ( 'TMSG', messageBase );
-
- if ( resH )
- { Ptr p = *resH;
- unsigned short count = * ( short *) p;
- p += sizeof ( short );
-
- for ( unsigned long i = 1 ; i <= count ; ++ i )
- { unsigned short len = * ( short *) ( p + sizeof(short) );
- if ( * ( short *) p == id )
- {
- fMessage = FAILNewHandle ( len );
- BlockMove ( (Ptr) ( p + 2 * sizeof( short ) ), *fMessage, len );
- break;
- }
- else
- {
- p += sizeof ( short ) + sizeof ( short ) + len;
- }
- }
- }
- else
- fMessage = FAILNewHandle ( 0 );
- }
-
- /***********************************|****************************************/
-
-
- TMessage::~TMessage ( )
- {
- DisposeIfHandle ( fMessage );
- }
-
- /***********************************|****************************************/
-
- Handle TMessage::GetTextHandle ( ) const
- {
- return fMessage;
- }
-
- /***********************************|****************************************/
-
- unsigned long TMessage::GetTextLength ( ) const
- {
- return GetHandleSize ( fMessage );
- }
-
- /***********************************|****************************************/
-
- void TMessage::Lock ( ) const
- {
- ((TMessage*) this)->fLockCount ++ ;
- HLock ( fMessage );
- }
-
- /***********************************|****************************************/
-
- void TMessage::Unlock ( ) const
- {
- if ( fLockCount > 0 )
- {
- ((TMessage*) this)->fLockCount -- ;
- HUnlock ( fMessage );
- }
- }
-
- /***********************************|****************************************/
-
- Boolean TMessage::SetItemValue ( const char * item, const char * newValue )
- { Boolean result = false;
- long offset = 0;
-
- do {
- offset = Munger ( fMessage, offset, (Ptr) item, strlen ( item ),
- (Ptr) newValue, strlen ( newValue ) );
- if ( offset >= 0 )
- result = true;
- } while ( offset >= 0 );
-
- return result;
- }
-
- /***********************************|****************************************/
-
- Boolean TMessage::SetItemValue ( const char * item, const Str255& newValue )
- { Boolean result = false;
- long offset = 0;
-
- do {
- offset = Munger ( fMessage, offset, (Ptr) item, strlen ( item ),
- (Ptr) & newValue[1], newValue [ 0 ] );
- if ( offset >= 0 )
- result = true;
- } while ( offset >= 0 );
-
- return result;
- }
-
- /***********************************|****************************************/
-